package com.ruoyi.system.vo;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 需求变更申请VO
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
public class DemandChangeRequestVO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 变更编号
     */
    private String changeNo;

    /**
     * 项目ID
     */
    private Long projectId;

    /**
     * 项目编号
     */
    private String projectCode;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 客户id
     */
    private Long customerId;

    /**
     * 当前阶段
     */
    private String currentStage;

    /**
     * 设计项目编号
     */
    private String designProjectCode;

    /**
     * 施工项目编号
     */
    private String constructionProjectCode;

    /**
     * 变更类型
     */
    private String changeType;

    /**
     * 变更类型名称
     */
    private String changeTypeName;

    /**
     * 变更内容描述（富文本）
     */
    private String changeContent;

    /**
     * 变更原因
     */
    private String changeReason;

    /**
     * 变更影响范围
     */
    private ImpactScopeVO impactScope;

    /**
     * 附件列表
     */
    private List<String> attachments;

    /**
     * 紧急程度
     */
    private String urgencyLevel;

    /**
     * 紧急程度名称
     */
    private String urgencyLevelName;

    /**
     * 紧急理由
     */
    private String urgencyReason;

    /**
     * 设计师ID
     */
    private Long designerId;

    /**
     * 设计师姓名
     */
    private String designerName;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 状态名称
     */
    private String statusName;

    /**
     * 提交次数
     */
    private Integer submitCount;

    /**
     * 审核人ID
     */
    private Long auditBy;

    /**
     * 审核人姓名
     */
    private String auditName;

    /**
     * 审核时间
     */
    private LocalDateTime auditTime;

    /**
     * 审核意见
     */
    private String auditOpinion;

    /**
     * 审核确认的变更影响范围
     */
    private ImpactScopeVO auditImpactScope;

    /**
     * 同步模块列表
     */
    private List<String> syncModules;

    /**
     * 执行人ID
     */
    private Long executeBy;

    /**
     * 执行人姓名
     */
    private String executeName;

    /**
     * 执行时间
     */
    private LocalDateTime executeTime;

    /**
     * 执行备注
     */
    private String executeRemark;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 审核记录列表
     */
    private List<DemandChangeAuditLogVO> auditLogs;

    /**
     * 变更影响范围VO
     */
    @Data
    public static class ImpactScopeVO {
        /**
         * 是否影响工期
         */
        private Boolean affectSchedule;

        /**
         * 预计增减天数
         */
        private String scheduleChange;

        /**
         * 是否影响成本
         */
        private Boolean affectCost;

        /**
         * 预计增减金额
         */
        private String costChange;

        /**
         * 其他影响
         */
        private String otherImpact;

        /**
         * 调整理由
         */
        private String adjustReason;
    }
}
